# This is a BitKeeper generated patch for the following project: # Project Name: Linux kernel tree # This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas: # ChangeSet 1.1046.15.28 -> 1.1046.15.29 # include/linux/timex.h 1.6 -> 1.7 # kernel/time.c 1.13 -> 1.14 # kernel/timer.c 1.52.1.2 -> 1.52.1.3 # # The following is the BitKeeper ChangeSet Log # -------------------------------------------- # 03/05/17 rmk@flint.arm.linux.org.uk 1.1046.44.16 # [ARM] Relocate ARM SCSI and Net drivers # # Move Acorn and ARM SCSI and net drivers to drivers/{net,scsi}/arm. # This also allows us to find a reasonable home for other ARM specific # net drivers. # -------------------------------------------- # 03/05/17 rmk@flint.arm.linux.org.uk 1.1046.44.17 # [ARM] Update cyber2000fb.c # # - Fix build warnings. # - Don't modify region in copyarea method. # - Remove FBCON_HAS_CFBx preprocessor tests. # - Use runtime test for netwinder mclk parameters. # -------------------------------------------- # 03/05/17 rmk@flint.arm.linux.org.uk 1.1046.44.18 # [ARM] Fixup yet another missing irqreturn_t # -------------------------------------------- # 03/05/17 rmk@flint.arm.linux.org.uk 1.1046.44.19 # [ARM] Update Acorn IDE drivers. # # icside.c: # - Use C99 structure initialisers. # - Use generic DMA API. # - Use new hwif->hwif_data rather than hwif->hw.priv. # - Add DMA supported/dma supported masks. # - Remember the card type for the remove/shutdown methods. # - Add shutdown method. # rapide.c # - ecard_{claim,release} are no longer required. # -------------------------------------------- # 03/05/17 rmk@flint.arm.linux.org.uk 1.1046.44.20 # [ARM] Remove .devclass initialiser from sa1111ps2. # -------------------------------------------- # 03/05/17 rmk@flint.arm.linux.org.uk 1.1046.44.21 # [ARM] Fix time_after() warnings in ether1.c. # -------------------------------------------- # 03/05/17 rmk@flint.arm.linux.org.uk 1.1046.88.2 # Merge flint.arm.linux.org.uk:/usr/src/linux-bk-2.5/linux-2.5 # into flint.arm.linux.org.uk:/usr/src/linux-bk-2.5/linux-2.5-serial # -------------------------------------------- # 03/05/17 rmk@flint.arm.linux.org.uk 1.1046.89.1 # [ARM] Merge Linus' tree with current ARM tree. # -------------------------------------------- # 03/05/17 torvalds@home.transmeta.com 1.1046.1.106 # Merge bk://kernel.bkbits.net/davem/net-2.5 # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/05/17 axboe@suse.de 1.1046.1.107 # [PATCH] Always allocate sense buffer for block commands # # This always set ->sense for blk_pc_requests(), even if the actual user # doesn't care about the sense results. This is a lot nicer than then # having to have conditional checks for it all over the place in the low- # level drivers. # -------------------------------------------- # 03/05/17 sam@ravnborg.org 1.1046.1.108 # [PATCH] Remove 'strchr' warning from reiserfs # # Reiserfs emits a warning about strchr being defined but not used. I # finally tracked down the reason for this. gcc - when seeing strstr(x, # "%") recognized that the second parameter is a char, and therefore uses # strchr instead of strstr. The workaround to avoid the warning is to # replace the call to strstr with strchr - which is OK. # # This hides the warning, and brings us down to 6 warnings for a make # defconfig bzImage. # -------------------------------------------- # 03/05/17 torvalds@home.transmeta.com 1.1046.1.109 # Make request_module() take a printf-like vararg argument instead of a string. # # This is what a lot of the callers really wanted. # -------------------------------------------- # 03/05/17 rmk@flint.arm.linux.org.uk 1.1046.89.2 # [ARM] Fix DMA handler race condition. # # This fixes a race condition in the RiscPC DMA code, which causes # DMA for a channel to halt due to a race condition between the # hardware state machine and the software programming the next DMA # buffer. # -------------------------------------------- # 03/05/17 acme@conectiva.com.br 1.1046.1.110 # o ipv6/route: fix .dst.metrics struct init for ip6_null_entry # # Thanks to Andrew Morton for reporting. # -------------------------------------------- # 03/05/17 acme@conectiva.com.br 1.1046.1.111 # o ipv6/route: use C99 style init for struct init # # Also move ft6_dflt_pointer to .bss and use void # in ip6_dst_gc as it doesn't take any paramenters # -------------------------------------------- # 03/05/17 mk@linux-ipv6.org 1.1046.90.1 # [CRYPTO]: Update deflate dependencies. # -------------------------------------------- # 03/05/17 davem@nuts.ninka.net 1.1046.1.112 # Merge bk://kernel.bkbits.net/acme/net-2.5 # into nuts.ninka.net:/home/davem/src/BK/net-2.5 # -------------------------------------------- # 03/05/17 rusty@rustcorp.com.au 1.1046.1.113 # [NETFILTER]: Move skb_ip_make_writable to netfilter.c. # -------------------------------------------- # 03/05/17 acme@conectiva.com.br 1.1046.91.1 # o ipv6/addrconf: use C99 struct init style for inet6_rtnetlink_table # -------------------------------------------- # 03/05/17 acme@conectiva.com.br 1.1046.91.2 # o ipv6/exthdrs: use C99 struct init style. # -------------------------------------------- # 03/05/17 davem@nuts.ninka.net 1.1046.1.114 # Merge bk://kernel.bkbits.net/acme/net-2.5 # into nuts.ninka.net:/home/davem/src/BK/net-2.5 # -------------------------------------------- # 03/05/17 acme@conectiva.com.br 1.1046.91.3 # o ipv6/icmp: use C99 struct style init for tab_unreach # -------------------------------------------- # 03/05/17 acme@conectiva.com.br 1.1046.91.4 # o ipv6/ip6_fib: use C99 struct style init and move rt_sernum to .bss # -------------------------------------------- # 03/05/17 davem@nuts.ninka.net 1.1046.1.115 # [NETFILTER]: Move skb_ip_make_writable symbol export. # -------------------------------------------- # 03/05/17 davem@nuts.ninka.net 1.1046.1.116 # Merge bk://kernel.bkbits.net/acme/net-2.5 # into nuts.ninka.net:/home/davem/src/BK/net-2.5 # -------------------------------------------- # 03/05/17 mk@linux-ipv6.org 1.1046.1.117 # [IPSEC]: Fix ipv4 ipcomp threshold calculation. # -------------------------------------------- # 03/05/17 davem@nuts.ninka.net 1.1046.1.118 # [IPV4]: Flush routing cache on sysctl_ip_default_ttl changes. # -------------------------------------------- # 03/05/18 zaitcev@redhat.com 1.1046.92.1 # [SPARC]: Keiths SMP patch #1 # -------------------------------------------- # 03/05/18 zaitcev@redhat.com 1.1046.92.2 # [SPARC]: Add ->release to ESP driver. # -------------------------------------------- # 03/05/18 zaitcev@redhat.com 1.1046.92.3 # [SPARC]: Update defconfig. # -------------------------------------------- # 03/05/18 zaitcev@redhat.com 1.1046.92.4 # [SPARC]: Sanitize BUG(). # -------------------------------------------- # 03/05/19 anton@samba.org 1.1046.93.1 # Merge samba.org:/scratch/anton/linux-2.5 # into samba.org:/scratch/anton/tmp3 # -------------------------------------------- # 03/05/18 acme@conectiva.com.br 1.1046.91.5 # o wanrouter/wanproc: code cleanups # # . Use seq_puts in places where seq_printf is not needed # . remove trailing whitespaces and tabs # . remove some unneeded includes # . move the space before the third and fourth columns from # the values to be inserted to the mask # . some other CodingStyle changes # -------------------------------------------- # 03/05/18 acme@conectiva.com.br 1.1046.91.6 # o drivers/net/wan/sdla*: use SET_MODULE_OWNER at net_device setup # -------------------------------------------- # 03/05/18 hch@de.rmk.(none) 1.1046.94.1 # [PATCH] kill register_pccard_driver # # I tried to get as much in as possible through the maintainers but # didn't get much feedback.. (Except two batches included and Kai # ACKing the ISDN stuff). # # So here's a big patch to move the reamining users over to # pcmcia_register_driver and kill it off. # -------------------------------------------- # 03/05/18 chas@cmf.nrl.navy.mil 1.1046.1.119 # [ATM]: Need to use try_module_get not __module_get. # -------------------------------------------- # 03/05/19 perex@suse.cz 1.1046.95.1 # Merge suse.cz:/home/perex/bk/linux-sound/linux-2.5 # into suse.cz:/home/perex/bk/linux-sound/linux-sound # -------------------------------------------- # 03/05/19 dwmw2@infradead.org 1.1046.96.1 # Merge master.kernel.org:/home/torvalds/BK/linux-2.5 # into infradead.org:/inst/bk/linus-2.5 # -------------------------------------------- # 03/05/20 anton@samba.org 1.1046.93.2 # ppc64: fix compile warnings # -------------------------------------------- # 03/05/20 anton@samba.org 1.1046.93.3 # ppc64: fix misreporting of unhandled IRQs in xics IPI # -------------------------------------------- # 03/05/20 anton@samba.org 1.1046.93.4 # ppc64: cleanup some hardcoded constants # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.1 # [PATCH] sysfs_create_link() fix # # It is incorrectly precalculating the string's length. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.2 # [PATCH] ia32 subarch circular dependency fix # # From: john stultz # # This patch fixes a circular dependency (a function in mach_apic.h requires # hard_smp_processor_id() and hard_smp_processor_id() requires macros from # mach_apic.h) that has been in the subarch code for a bit, but was hacked # around with some #ifdefs. # # With the inclusion of the generic-subarch the hack was dropped and bigsmp # and summit promptly broke. So this makes things compile again. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.3 # [PATCH] genarch cpu_mask_to_apicid fix # # From: Martin Bligh # # Add cpu_mask_to_apicid to generic arch to fit with Keith's changes. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.4 # [PATCH] [patch 4/29 voyager cpu_callout_map fix # # From: Martin Bligh # # Change the defn of cpu_callout_map for voyager to volatile to match other # stuff. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.5 # [PATCH] ppp warning fix # # Fix an accidentally negated comparison. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.6 # [PATCH] misc fixes # # - generic_file_open() comment fix (Bill Irwin) # # - kerneldoc fix in truncate.c (Aniruddha M Marathe) # # - remove truncate debug check. # # - page_lock comment fix (Robert Love) # # - remove unused device mapper label. # # - 3c509 docco fix ("Mark Tranchant" ) # # -- # # Documentation/networking/3c509.txt | 2 +- # drivers/md/dm-ioctl.c | 1 - # fs/open.c | 2 +- # include/linux/fs.h | 2 +- # mm/truncate.c | 8 +++----- # 5 files changed, 6 insertions(+), 9 deletions(-) # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.7 # [PATCH] large-dma_addr_t-PAE-only.patch # # From: William Lee Irwin III # # I was just looking over this and noticed 2.4.x makes u64 dma_addr_t # conditional on CONFIG_HIGHMEM64G where 2.5.x uses CONFIG_HIGHMEM. It's # clearly not necessary on CONFIG_HIGHMEM4G, hence this obvious patch. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.8 # [PATCH] 3c59x irqreturn fix # # Apparently boomerang_interrupt() is generating lots of "nobody cared" # warnings - one per packet it seems. Frankly, I don't have a clue why. # # These are ancient cards and the driver is otherwise stable, so just # change it to return IRQ_HANDLED and move on... # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.9 # [PATCH] reiserfs: allow multiple block insertion into the tree # # I've had these reiserfs patches in -mm for many months. We've been # undecided because they trigger bugs in a couple of apps. But those apps # are now fixed, so it's best to get these speedups in. # # # From: Oleg Drokin # # This patch allows insertion of more than one "indirect" block pointer into # the tree in reiserfs. (with all the necessary balancing code changes). # The first user of that feature is hole-creation code that is now ~1000 # times more cpu-efficient for the case of large holes. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.10 # [PATCH] reiserfs: reiserfs_file_write implementation # # From: Oleg Drokin # # With the current 'one block at a time' algorithm, writes past the end of a # file are slow because each new file block is separately added into the tree # causing shifting of other items which is CPU expensive. # # With this new implementation if you write into file with big enough chunks, # it uses half as much CPU. Also this version is more SMP friendly than the # current one. # # There are some known-bad applications that break with this patch (ie. start # to work very slow or even hang). # # This is because the filesystem returns a large value in the stat.st_blocksize # hint (128k instead of 4k). This tickles a small number of application bugs. # One is KDE's kmail 3.04 (fixed by upgrading to 3.1+) and the other is # sleepycat's database from before 1997. # # If you hit a slowdown problem that you believe is related to the increased # "recommended i/o size" value, try to mount your fs with nolargeio=1 mount # option (remount should work too). # # This patch exports block_commit_write(), generic_osync_inode() and # remove_suid() to modules. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.11 # [PATCH] fix CONFIG_APM=m # # From: mikpe@csd.uu.se # # Here is a patch to fix CONFIG_APM=m in 2.5.69-bk11. My patch to have APM # restore the systenter MSRs failed to handle the modular case, which fails # with unresolved symbols. # # Since suspend.o is used from both APM (module or built-in) and ACPI sleep # (built-in), I made suspend.o built-in and dependent on CONFIG_PM. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.12 # [PATCH] Fix for latent bug in vmtruncate() # # From: "Paul E. McKenney" # # The vmtruncate() function shifts down by PAGE_CACHE_SHIFT, then calls # vmtruncate_list(), which deals in terms of PAGE_SHIFT instead. Currently, # no harm done, since PAGE_CACHE_SHIFT and PAGE_SHIFT are identical. Some # day they might not be, hence this patch. # # I also took the liberty of modifying a hand-coded "if" that seems to # optimize for files that are not mapped to instead use unlikely(). # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.13 # [PATCH] v4l: #1 - video-buf update # # From: Gerd Knorr # # This minor patch updates the video-buf module. It just adds a export # for the videobuf_next_field function and adds some debug printk's. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.14 # [PATCH] v4l: #2 - v4l1-compat update # # From: Gerd Knorr # # This patch updates the v4l1-compat module. Changes: # # * use f_op->poll() instead of do_select() # # * reduce stack usage of the v4l1_translate_ioctl() function. # # * misc minor fixes here and there. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.15 # [PATCH] v4l: #4 - bttv docmentation update # # From: Gerd Knorr # # This patch updates the bttv documentation. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.16 # [PATCH] v4l: #5 - i2c module updates. # # From: Gerd Knorr # # This patch updates a number of video4linux-related i2c modules. There are a # number of bugfixes which accumulated over time, also some no-op i2c changes # due to merging the i2c cleanups back into my tree and tweak them to make the # modules compile on both 2.5.x and 2.4.x. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.17 # [PATCH] v4l: #6 - tuner module update # # From: Gerd Knorr # # This patch updates the tv card tuner module. It adds support for a new tuner # and has some minor fixes + cleanups. Also deletes some dead code. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.18 # [PATCH] v4l: #7 - saa7134 driver update # # From: Gerd Knorr # # Yet another big one (due to not being updated for a long time) -- saa7134 # driver update. Changes: # # * various bugfixes / cleanups. # # * new cards added to the cardlist. # # * started support for saa7133/35 chips. # # * make the driver check pci quirks. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.19 # [PATCH] fix tuner.c and tda9887.c # # From: Shane Shrybman # # Attached are two patches that make bttv compile and work in 2.5.69-mm6. I # think this broke in -mm4. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.20 # [PATCH] radeonfb.c 64-bit fixes # # From: David Mosberger # # Don't truncate the ioremap return value to 32-bits. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.21 # [PATCH] use %p to print pointers in cs4281 # # From: Christoph Hellwig # # This is a really old patch from the IA64 tree and as Cirrus Logic doesn't # maintain the driver anymore for about two years now no one picked it up.. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.22 # [PATCH] memcpy/memset fixes # # Fix some places which were doing # # memcpy(to, from, sizeof(to)); # and # memset(to, 0, sizeof(to)); # # Found by the Stanford checker. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.23 # [PATCH] BUG() -> BUG_ON() conversions. # # From: davej@codemonkey.org.uk # # Various performance critical sections. # # The increased cache footprint may be a pessimisation, especially on earlier # CPUs where unlikely() doesn't do anything useful, and we fall back to # trusting gcc to DTRT. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.24 # [PATCH] 3c59x: add support for 3c905B-T4, 3C920B-EMB-WNM # # A couple of new PCI IDs which were found in 3com's driver by Xose Vazquez # Perez . # # We don't know if these work, but if they are really 905B's and 920's it # should be OK. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.25 # [PATCH] CONFIG_ACPI_SLEEP compile fix # # From: mikpe@csd.uu.se # # When I grepped for these variables I failed to notice the references in # acpi/wakeup.S. This patch fixes this. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.26 # [PATCH] fix handling of spares physical APIC ids # # From: William Lee Irwin III # # To handle sparse physical APIC ID's properly the phys_cpu_present_map must # be scanned beyond bit NR_CPUS while ensuring no more than NR_CPUS are woken # in order not to attempt to wake non-addressible cpus. # # The following patch adds that logic to smp_boot_cpus() and corrects the # failure to wake secondaries reported by dhowells, with successful wakeup, # runtime, reboot, and halting reported after it was applied. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.27 # [PATCH] put_page_testzero() fix # # From: William Lee Irwin III # # put_page_testzero() does BUG_ON(page_count(page)) when its argument is p. # -------------------------------------------- # 03/05/19 akpm@digeo.com 1.1046.97.28 # [PATCH] DAC960 oops fix # # ioctl_by_bdev() passes in a NULL file*, so we had better not dereference it. # -------------------------------------------- # 03/05/19 warp@mercury.d2dc.net 1.1046.63.3 # [PATCH] I2C: And yet another it87 patch. # # Trivial, but important. # # Somehow in the patching the bk tree somehow got two memset's to clear # new_client in it87_detect, normally while this would be bad, it would # not be critical. # # However one of the two happens BEFORE the variable is set, and thus # things go badly. # -------------------------------------------- # 03/05/19 torvalds@home.transmeta.com 1.1046.98.1 # Merge bk://kernel.bkbits.net/davem/net-2.5 # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/05/19 mingo@elte.hu 1.1046.98.2 # [PATCH] signal latency fixes # # This fixes an SMP window where the kernel could miss to handle a signal, # and increase signal delivery latency up to 200 msecs. Sun has reported # to Ulrich that their JVM sees occasional unexpected signal delays under # Linux. The more CPUs, the more delays. # # The cause of the problem is that the current signal wakeup # implementation is racy in kernel/signal.c:signal_wake_up(): # # if (t->state == TASK_RUNNING) # kick_if_running(t); # ... # if (t->state & mask) { # wake_up_process(t); # return; # } # # If thread (or process) 't' is woken up on another CPU right after the # TASK_RUNNING check, and thread starts to run, then the wake_up_process() # here will do nothing, and the signal stays pending up until the thread # will call into the kernel next time - which can be up to 200 msecs # later. # # The solution is to do the 'kicking' of a running thread on a remote CPU # atomically with the wakeup. For this i've added wake_up_process_kick(). # There is no slowdown for the other wakeup codepaths, the new flag to # try_to_wake_up() is compiled off for them. Some other subsystems might # want to use this wakeup facility as well in the future (eg. AIO). # # In fact this race triggers quite often under Volanomark rusg, with this # change added, Volanomark performance is up from 500-800 to 2000-3000, on # a 4-way x86 box. # -------------------------------------------- # 03/05/19 mingo@elte.hu 1.1046.98.3 # [PATCH] scheduler cleanup # # This removes the unused requeueing code. # -------------------------------------------- # 03/05/19 mingo@elte.hu 1.1046.98.4 # [PATCH] sync wakeup on UP # # This fixes the scheduler's sync-wakeup code to be consistent on UP as # well. # # Right now there's a behavioral difference between an UP kernel and an # SMP kernel running on a UP box: sync wakeups (which are only activated # on SMP) can cause a wakeup of a higher prio task, without preemption. # On UP kernels this does not happen. This difference in wakeup behavior # is bad. # # This patch activates sync wakeups on UP as well - in the cases sync # wakeups are done the waker knows that it will schedule away soon, so # this 'delay preemption' decision is correct on UP as well. # -------------------------------------------- # 03/05/19 david-b@pacbell.net 1.1046.99.1 # [PATCH] USB: usbtest, talk to user mode "firmware" # # Supports some user-mode testing "firmware". # -------------------------------------------- # 03/05/19 mingo@elte.hu 1.1046.98.5 # [PATCH] Fix lost scheduler rebalances # # This fixes a race noticed by Mike Galbraith: the scheduler can lose a # rebalance tick if some task happens to not be rescheduled in time. This # is not a fatal condition, but an inconsistency nevertheless. # -------------------------------------------- # 03/05/19 lkml001@vrfy.org 1.1046.99.2 # [PATCH] USB: usb-skeleton compile fix # # usb-skelteon doesn't compile after recent changes. # -------------------------------------------- # 03/05/19 anton@samba.org 1.1046.99.3 # [PATCH] USB: gadget compile error on ppc64 # # I tried compiling USB gadget support on ppc64 (why not :). Looks like Im # seeing a conflict between const and __devinitdata: # # drivers/usb/gadget/net2280.c:2645: pci_ids causes a section type conflict # -------------------------------------------- # 03/05/19 mdharm-usb@one-eyed-alien.net 1.1046.99.4 # [PATCH] USB: storage: generate BBB reset after abort # # This patch forces the generation of a bulk-transport reset after a command # abort. Careful reading of the bulk-only specification shows that a reset # must be done after an abort to get the host and target back into phase. # -------------------------------------------- # 03/05/19 mdharm-usb@one-eyed-alien.net 1.1046.99.5 # [PATCH] USB: storage: remove inline function # # This patch removes a single-line inline function and replaces it with it's # expansion everywhere. The inline function was really only there for a # transitional step. # -------------------------------------------- # 03/05/19 torvalds@home.transmeta.com 1.1046.98.6 # Merge bk://bk.arm.linux.org.uk/linux-2.5-rmk # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/05/19 Walter.Harms@Informatik.Uni-Oldenburg.DE 1.1046.99.6 # [PATCH] USB: fixes kernel_thread # -------------------------------------------- # 03/05/19 agrover@groveronline.com 1.1046.81.22 # ACPI: Update Toshiba driver to 0.15 (John Belmonte) # - workaround sporadic problem with hotkey ceasing to work # - cleanups # -------------------------------------------- # 03/05/19 bcollins@debian.org 1.1046.98.7 # [PATCH] Update IEEE1394 (r931) # # - Fix possible memory leak in iso.c # - Added handling for more than 1 Logical_Unit_Number entry in a unit # directory for SBP-2. This allows for handling the second type of LUN # that we didn't support yet. # -------------------------------------------- # 03/05/19 hch@sgi.com 1.1046.100.1 # [XFS] merge Steve's sync changes over to 2.5 # # SGI Modid: 2.5.x-xfs:slinx:147932a # -------------------------------------------- # 03/05/19 agrover@groveronline.com 1.1046.101.1 # Merge groveronline.com:/root/bk/linux-2.5 # into groveronline.com:/root/bk/linux-acpi # -------------------------------------------- # 03/05/19 Andries.Brouwer@cwi.nl 1.1046.98.8 # [PATCH] namespace fix # # After # # # mount --rbind /tmp /mnt # # (on 2.5.68) I have a corrupted namespace. Umounting /mnt fails, # and /proc/mounts contains # # ... # /dev/root /mnt ext3 rw 0 0 # proc /mnt/proc proc rw 0 0 # usbfs /mnt/proc/bus/usb usbfs rw 0 0 # /dev/hdb5 /mnt/usr reiserfs rw 0 0 # ... # # where of course no directories /mnt/proc or /mnt/usr exist. # # This is caused by the fact that copy_tree() thinks that the dentry # it is called with is the root of the filesystem. If it is not, # confusion arose. # # This patch fixes this confusion. # -------------------------------------------- # 03/05/19 Andries.Brouwer@cwi.nl 1.1046.98.9 # [PATCH] NCR5380.c fix # # Several SCSI drivers confuse CHECK_CONDITION and CHECK_CONDITION << 1. # One of them is NCR5380.c. Below a patch adding status_byte() twice. # # (On the other hand, sun3_NCR5380.c does this right, and generally # looks better. Maybe they can be merged eventually.) # -------------------------------------------- # 03/05/19 cwf@sgi.com 1.1046.100.2 # [XFS] Merge over an irix fix # # SGI Modid: 2.5.x-xfs:slinx:132737a # -------------------------------------------- # 03/05/19 Andries.Brouwer@cwi.nl 1.1046.98.10 # [PATCH] fix oops in namespace.c # # A familar type of Oops: d_path() can return an error ENAMETOOLONG, and # if we fail to test a segfault occurs. # # So we must test. What we do is a different matter. Rather arbitrarily # I return the string " (too long)" for use in /proc/mounts. # -------------------------------------------- # 03/05/19 nathans@sgi.com 1.1046.100.3 # [XFS] Fix up error handling on the initial superblock read. # # SGI Modid: 2.5.x-xfs:slinx:148285a # -------------------------------------------- # 03/05/19 hch@sgi.com 1.1046.100.4 # [XFS] avoid sleep_on in the sync code # # SGI Modid: 2.5.x-xfs:slinx:148415a # -------------------------------------------- # 03/05/19 nathans@sgi.com 1.1046.100.5 # [XFS] Fix up a pagebuf spelling mistake and a couple of whitespace botches. # # SGI Modid: 2.5.x-xfs:slinx:148595a # -------------------------------------------- # 03/05/19 mingo@elte.hu 1.1046.98.11 # [PATCH] fix do_fork() return value # # Noticed by Julie DeWandel . # # do_fork() needs to return the pid (or error), not the pointer to the # resulting process structure. The process structure may not even be # valid any more, since do_fork() has already woken the process up (and as # a result it might already have done its thing and gone away). # # Besides, doing it this way cleans up the users, which all really just # wanted the pid or error number _anyway_. # # This fixes the x86 users, other architectures need to be fixed up as # well. # -------------------------------------------- # 03/05/19 lord@sgi.com 1.1046.100.6 # [XFS] Move xfs_syncd code into xfs_super.c which is the only place which uses it # # SGI Modid: 2.5.x-xfs:slinx:148433a # -------------------------------------------- # 03/05/19 hch@sgi.com 1.1046.100.7 # [XFS] Fix compile warning on my iBook # # SGI Modid: 2.5.x-xfs:slinx:148598a # -------------------------------------------- # 03/05/19 nathans@sgi.com 1.1046.100.8 # [XFS] V1 log tweak - fix log record length used when checking for a partial log # record write during log recovery head/tail calculations. # # SGI Modid: 2.5.x-xfs:slinx:148895a # -------------------------------------------- # 03/05/19 hch@sgi.com 1.1046.100.9 # [XFS] simplify memory allocation code big time # # SGI Modid: 2.5.x-xfs:slinx:148933a # -------------------------------------------- # 03/05/19 hch@sgi.com 1.1046.100.10 # [XFS] Use __GFP_NORETRY in pagebuf readahead code # # SGI Modid: 2.5.x-xfs:slinx:148940a # -------------------------------------------- # 03/05/19 lord@sgi.com 1.1046.100.11 # [XFS] remove the excess ; which crept into the syncd thread somewhere and # basically turned it off. # # SGI Modid: 2.5.x-xfs:slinx:148955a # -------------------------------------------- # 03/05/19 nathans@sgi.com 1.1046.100.12 # [XFS] Large sector changes - fixup definition of xfs_agfl_t, and numerous # changes to make log recovery respect the log device sector size. # # SGI Modid: 2.5.x-xfs:slinx:149230a # -------------------------------------------- # 03/05/19 nathans@sgi.com 1.1046.100.13 # [XFS] Small buftarg cleanup - keep code which pokes inside a buftarg all in # one spot, which lets us keep more common code in sync, 2.4/2.5 and is # slightly cleaner anyway. # # SGI Modid: 2.5.x-xfs:slinx:149231a # -------------------------------------------- # 03/05/19 nathans@sgi.com 1.1046.100.14 # [XFS] Second part buftarg cleanup, don't poke inside a buftarg here anymore # # SGI Modid: 2.5.x-xfs:slinx:149232a # -------------------------------------------- # 03/05/19 nathans@sgi.com 1.1046.100.15 # [XFS] Remove a void* from the xfs_mount structure, move the log stripe mask # field from the xfs_mount structure to the log structure (saves a couple # of pointer dereferences when writing to the log, with v2 logs only). # # SGI Modid: 2.5.x-xfs:slinx:149395a # -------------------------------------------- # 03/05/19 nathans@sgi.com 1.1046.100.16 # [XFS] Rationalise xlog_in_core2 definition, remove some ifdef __KERNEL__ code # which is unnecessary in log recovery, clarify some recovery debug code. # # SGI Modid: 2.5.x-xfs:slinx:149396a # -------------------------------------------- # 03/05/19 nathans@sgi.com 1.1046.100.17 # [XFS] Make log recovery code style consistent with a/ itself and b/ much of # the rest of XFS. Fix numerous crimes against whitespace. # # SGI Modid: 2.5.x-xfs:slinx:149398a # -------------------------------------------- # 03/05/19 nathans@sgi.com 1.1046.100.18 # [XFS] Fix two remaining indentation inconsistencies. # # SGI Modid: 2.5.x-xfs:slinx:149400a # -------------------------------------------- # 03/05/19 nathans@sgi.com 1.1046.100.19 # [XFS] Remove some dead code. # # SGI Modid: 2.5.x-xfs:slinx:149409a # -------------------------------------------- # 03/05/19 hch@hera.kernel.org 1.1046.98.12 # Merge # -------------------------------------------- # 03/05/19 jbarnes@sgi.com 1.1046.77.20 # [PATCH] ia64: SN cleanups # # Some patches from hch@infradead.org cleaning up sn2 code a bit, # including the removal of some unnecessary files. # -------------------------------------------- # 03/05/19 torvalds@penguin.transmeta.com 1.1046.102.1 # Merge bk://cifs.bkbits.net/linux-2.5cifs # into penguin.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/05/19 torvalds@penguin.transmeta.com 1.1046.98.13 # Merge ssh://master.kernel.org//home/hch/BK/xfs/linux-2.5/ # into penguin.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/05/19 davej@codemonkey.org.uk 1.1046.80.6 # [AGPGART] Add support for VIA K8T400M GART. # -------------------------------------------- # 03/05/19 davej@codemonkey.org.uk 1.1046.80.7 # [AGPGART] Improve Kconfig. # The AMD K8 GART driver is really for the on-CPU GART not the chipset as the Kconfig described. # Also fix up some grammar elsewhere. # -------------------------------------------- # 03/05/19 greg@kroah.com 1.1046.63.4 # i2c: fix up i2c-dev driver based on previous core changes. # # This fixes the problem that adapter id's are not the minor number for the # i2c-dev devices anymore. Also adds a i2c-dev class to let userspace know # which i2c-dev device is bound to which i2c adapter. # -------------------------------------------- # 03/05/19 greg@kroah.com 1.1046.98.14 # Merge # -------------------------------------------- # 03/05/20 davej@codemonkey.org.uk 1.1046.80.8 # [AGPGART] agp_3_5_enable() doesn't need mode parameter. # -------------------------------------------- # 03/05/20 davej@codemonkey.org.uk 1.1046.80.9 # [AGPGART] Sanity check (and fix up broken) AGP modes when in AGP 3.0 mode. # -------------------------------------------- # 03/05/19 david-b@pacbell.net 1.1046.99.7 # [PATCH] USB: Fix machine lockup when unloading HC driver # # Alan Stern wrote: # > I finally got tired of my computer locking up when I tried to rmmod the # > low-level host controller driver. It turns out the problem lies in the # > root-hub status urb code in core/hcd.c -- primarily a result of # > rh_report_status() not calling hcd_giveback_urb()... # # Or in short: your patch removes some old logic for the "automagic # interrupt transfer" special casing ... which recently started to # break that rmmod path. # # With automagic, the only time an interrupt urb (like the root hub # status urb) could legitimately be given back was for unlink. But # that unlink doesn't seem to be issued in the same way lately during # the rmmod paths. (If they're less bizarre lately, that's good!) # # # > If this patch seems all right, will you please let Greg know it's okay to # > apply it? # # I changed a couple minor things below ... basically (a) fixing the # issue Duncan Sands pointed out (always call completions with irqs # disabled, even if hub driver currently doesn't care), (b) better # logic to avoid retriggering the timer during shutdown, (c) not # doing del_timer_sync() while holding that lock, plus (d) a minor # linewrap fix. # -------------------------------------------- # 03/05/19 greg@kroah.com 1.1046.103.1 # Merge kroah.com:/home/greg/linux/BK/bleed-2.5 # into kroah.com:/home/greg/linux/BK/gregkh-2.5 # -------------------------------------------- # 03/05/19 davem@nuts.ninka.net 1.1046.1.120 # Merge nuts.ninka.net:/home/davem/src/BK/network-2.5 # into nuts.ninka.net:/home/davem/src/BK/net-2.5 # -------------------------------------------- # 03/05/19 davem@nuts.ninka.net 1.1046.104.1 # Merge nuts.ninka.net:/home/davem/src/BK/sparcwork-2.5 # into nuts.ninka.net:/home/davem/src/BK/sparc-2.5 # -------------------------------------------- # 03/05/20 davej@codemonkey.org.uk 1.1046.80.10 # [AGPGART] Log broken applications that pass crap flags so they can be fixed. # -------------------------------------------- # 03/05/19 davem@nuts.ninka.net 1.1046.104.2 # [SPARC{32,64}]: Adjust for changed do_fork return value. # -------------------------------------------- # 03/05/19 zaitcev@redhat.com 1.1046.104.3 # [SPARC]: Fix ptracing of syscalls. # -------------------------------------------- # 03/05/19 zaitcev@redhat.com 1.1046.104.4 # [SPARC]: Switch bitops to unsigned long. # -------------------------------------------- # 03/05/19 davidm@tiger.hpl.hp.com 1.1046.15.29 # Overhaul time-interpolation support. Platforms that do not ever wish to # use time-interpolation should NOT define CONFIG_TIME_INTERPOLATION. # There will be no overhead on such platforms. # # If you have a platform that has exactly one time-interpolation source, # define CONFIG_TIME_INTERPOLATION and let the generic code take care # of updating "last_nsec_offset" as needed, but never call # register_time_interpolator(). Instead, hard-code the updating of # last_nsec_offset in do_gettimeofday() (and do_settimeofday()). # This will minimize overhead to a single load & NULL check (everything else # gets inlined). # # If you have a platform that needs to support multiple interpolation # sources, register each source with regsiter_time_interpolator(). # Each call to time_interpolator_update()/time_interpolator_reset() will # then incur an indirect function call. C'est la vie. # -------------------------------------------- # diff -Nru a/include/linux/timex.h b/include/linux/timex.h --- a/include/linux/timex.h Mon Sep 22 12:59:51 2003 +++ b/include/linux/timex.h Mon Sep 22 12:59:51 2003 @@ -51,6 +51,9 @@ #ifndef _LINUX_TIMEX_H #define _LINUX_TIMEX_H +#include +#include + #include /* @@ -310,12 +313,103 @@ extern long pps_errcnt; /* calibration errors */ extern long pps_stbcnt; /* stability limit exceeded */ -/* - * Call-back for high precision timer sources to snapshot every time - * wall_jiffies is updated. - */ -extern void (*update_wall_time_hook)(long adjust_nsec); -extern void (*reset_wall_time_hook)(void); +#ifdef CONFIG_TIME_INTERPOLATION + +struct time_interpolator { + /* cache-hot stuff first: */ + unsigned long (*get_offset) (void); + void (*update) (long); + void (*reset) (void); + + /* cache-cold stuff follows here: */ + struct time_interpolator *next; + unsigned long frequency; /* frequency in counts/second */ + long drift; /* drift in parts-per-million (or -1) */ +}; + +extern volatile unsigned long last_nsec_offset; +#ifndef __HAVE_ARCH_CMPXCHG +extern spin_lock_t last_nsec_offset_lock; +#endif +extern struct time_interpolator *time_interpolator; + +extern void register_time_interpolator (struct time_interpolator *); +extern void unregister_time_interpolator (struct time_interpolator *); + +/* Called with xtime read- OR write-lock acquired. */ +static inline void +time_interpolator_update (long delta_nsec) +{ + struct time_interpolator *ti = time_interpolator; + + if (last_nsec_offset > 0) { +#ifdef __HAVE_ARCH_CMPXCHG + unsigned long new, old; + + do { + old = last_nsec_offset; + if (old > delta_nsec) + new = old - delta_nsec; + else + new = 0; + } while (cmpxchg(&last_nsec_offset, old, new) != old); +#else + /* + * This really hurts, because it serializes gettimeofday(), but without an + * atomic single-word compare-and-exchange, there isn't all that much else + * we can do. + */ + spin_lock(&last_nsec_offset_lock); + { + last_nsec_offset -= min(last_nsec_offset, delta_nsec); + } + spin_unlock(&last_nsec_offset_lock); +#endif + } + + if (ti) + (*ti->update)(delta_nsec); +} + +/* Called with xtime read- or write-lock acquired. */ +static inline void +time_interpolator_reset (void) +{ + struct time_interpolator *ti = time_interpolator; + + last_nsec_offset = 0; + if (ti) + (*ti->reset)(); +} + +static inline unsigned long +time_interpolator_get_offset (void) +{ + struct time_interpolator *ti = time_interpolator; + if (ti) + return (*ti->get_offset)(); + return last_nsec_offset; +} + +#else /* !CONFIG_TIME_INTERPOLATION */ + +static inline void +time_interpolator_update (long delta_nsec) +{ +} + +static inline void +time_interpolator_reset (void) +{ +} + +static inline unsigned long +time_interpolator_get_offset (void) +{ + return 0; +} + +#endif /* !CONFIG_TIME_INTERPOLATION */ #endif /* KERNEL */ diff -Nru a/kernel/time.c b/kernel/time.c --- a/kernel/time.c Mon Sep 22 12:59:51 2003 +++ b/kernel/time.c Mon Sep 22 12:59:51 2003 @@ -76,7 +76,7 @@ return -EFAULT; write_seqlock_irq(&xtime_lock); - (*reset_wall_time_hook)(); + time_interpolator_reset(); xtime.tv_sec = value; xtime.tv_nsec = 0; time_adjust = 0; /* stop active adjtime() */ @@ -124,7 +124,7 @@ { write_seqlock_irq(&xtime_lock); xtime.tv_sec += sys_tz.tz_minuteswest * 60; - (*update_wall_time_hook)(sys_tz.tz_minuteswest * 60 * NSEC_PER_SEC); + time_interpolator_update(sys_tz.tz_minuteswest * 60 * NSEC_PER_SEC); write_sequnlock_irq(&xtime_lock); } diff -Nru a/kernel/timer.c b/kernel/timer.c --- a/kernel/timer.c Mon Sep 22 12:59:51 2003 +++ b/kernel/timer.c Mon Sep 22 12:59:51 2003 @@ -65,16 +65,6 @@ typedef struct tvec_t_base_s tvec_base_t; -/* - * Hooks for using external high precision timers for the system clock. - * On systems where the CPU clock isn't synchronized between CPUs, - * it is necessary to use an external source such as an RTC to obtain - * precision in gettimeofday(). - */ -static void nop (void) { } -void (*update_wall_time_hook)(long delta_nsec) = (void (*) (void)) &nop; -void (*reset_wall_time_hook)(void) = &nop; - static inline void set_running_timer(tvec_base_t *base, struct timer_list *timer) { @@ -527,7 +517,7 @@ if (xtime.tv_sec % 86400 == 0) { xtime.tv_sec--; wall_to_monotonic.tv_sec++; - (*update_wall_time_hook)(-NSEC_PER_SEC); + time_interpolator_update(-NSEC_PER_SEC); time_state = TIME_OOP; clock_was_set(); printk(KERN_NOTICE "Clock: inserting leap second 23:59:60 UTC\n"); @@ -538,7 +528,7 @@ if ((xtime.tv_sec + 1) % 86400 == 0) { xtime.tv_sec++; wall_to_monotonic.tv_sec--; - (*update_wall_time_hook)(NSEC_PER_SEC); + time_interpolator_update(NSEC_PER_SEC); time_state = TIME_WAIT; clock_was_set(); printk(KERN_NOTICE "Clock: deleting leap second 23:59:59 UTC\n"); @@ -654,7 +644,7 @@ delta_nsec += ltemp; } xtime.tv_nsec += delta_nsec; - (*update_wall_time_hook)(delta_nsec); /* update time interpolation */ + time_interpolator_update(delta_nsec); } /* @@ -674,7 +664,7 @@ if (xtime.tv_nsec >= 1000000000) { xtime.tv_nsec -= 1000000000; xtime.tv_sec++; - (*update_wall_time_hook)(NSEC_PER_SEC); + time_interpolator_update(NSEC_PER_SEC); second_overflow(); } } @@ -1234,3 +1224,80 @@ register_cpu_notifier(&timers_nb); open_softirq(TIMER_SOFTIRQ, run_timer_softirq, NULL); } + +#ifdef CONFIG_TIME_INTERPOLATION + +volatile unsigned long last_nsec_offset; + +struct time_interpolator *time_interpolator; + +#ifndef __HAVE_ARCH_CMPXCHG +spinlock_t last_nsec_offset_lock = SPIN_LOCK_UNLOCKED; +#endif + +static struct { + spinlock_t lock; /* lock protecting list */ + struct time_interpolator *list; /* list of registered interpolators */ +} ti_global = { + .lock = SPIN_LOCK_UNLOCKED +}; + +static inline int +is_better_time_interpolator (struct time_interpolator *new) +{ + if (!time_interpolator) + return 1; + return new->frequency > 2*time_interpolator->frequency + || (unsigned long) new->drift < (unsigned long) time_interpolator->drift; +} + +void +register_time_interpolator (struct time_interpolator *ti) +{ + spin_lock(&ti_global.lock); + { + write_seqlock_irq(&xtime_lock); + { + if (is_better_time_interpolator(ti)) + time_interpolator = ti; + } + write_sequnlock_irq(&xtime_lock); + + ti->next = ti_global.list; + ti_global.list = ti; + } + spin_unlock(&ti_global.lock); +} + +void +unregister_time_interpolator (struct time_interpolator *ti) +{ + struct time_interpolator *curr, **prev; + + spin_lock(&ti_global.lock); + { + prev = &ti_global.list; + for (curr = *prev; curr; curr = curr->next) { + if (curr == ti) { + *prev = curr->next; + break; + } + prev = &curr->next; + } + write_seqlock_irq(&xtime_lock); + { + if (ti == time_interpolator) { + /* we lost the best time-interpolator: */ + time_interpolator = NULL; + /* find the next-best interpolator */ + for (curr = ti_global.list; curr; curr = curr->next) + if (is_better_time_interpolator(curr)) + time_interpolator = curr; + } + } + write_sequnlock_irq(&xtime_lock); + } + spin_unlock(&ti_global.lock); +} + +#endif /* CONFIG_TIME_INTERPOLATION */